home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / util / wb / md1_8.lha / MultiDisplay / SrC / mdreqtools.c < prev    next >
C/C++ Source or Header  |  1997-09-06  |  3KB  |  120 lines

  1. /*
  2. **
  3. ** MULTI DISPLAY
  4. ** " Le vrai-faux viewer universel "
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9.  
  10. #include <exec/types.h>
  11. #include <exec/memory.h>        /* AllocVec() */
  12. #include <exec/libraries.h>     /* struct Library */
  13. #include <utility/tagitem.h>    /* struct TagItem */
  14. #include <dos/dos.h>            /* BPTR */
  15. #include <dos/dostags.h>        /* Tags */
  16.  
  17. #include <libraries/reqtools.h>
  18.  
  19. #include <pragmas/dos_pragmas.h>
  20. #include <pragmas/exec_pragmas.h>
  21. #include <pragmas/reqtools_pragmas.h>
  22.  
  23. #include "md_strings.h"
  24.  
  25. /* Prototypes des fonctions */
  26. extern void TraitementCli(STRPTR arg);
  27. extern STRPTR GetString(struct LocaleInfo *li, LONG stringNum);
  28.  
  29. extern struct Library *SysBase,*DOSBase,*ReqToolsBase;  /* Deja ouvertes */
  30.  
  31. extern struct LocaleInfo md_locale;                     /* Pour GetString() */
  32. BPTR in_dir=NULL;               /* Repertoire courant */
  33.  
  34. /* Affiche une requete de fichiers
  35.    Appelle TraitementCli() pour les fichiers selectionnes */
  36. BOOL RTRequete(void)
  37. {
  38.    struct TagItem taglist[4];
  39.    struct rtFileRequester *rt_req;
  40.    struct rtFileList *res_list;
  41.    BPTR old_dir;
  42.    STRPTR filename,wb_name="workbench";
  43.    BOOL result=TRUE;
  44.  
  45.    filename = (STRPTR)AllocVec(MAX_BUFFER,MEMF_PUBLIC|MEMF_CLEAR);
  46.    if( !filename )
  47.       return FALSE;
  48.  
  49.    /* Allocation */
  50.    rt_req = (struct rtFileRequester *)rtAllocRequestA(RT_FILEREQ,NULL);
  51.    if( rt_req )
  52.    {
  53.       taglist[0].ti_Tag = RT_PubScrName;
  54.       taglist[0].ti_Data = (ULONG)wb_name;
  55.       taglist[1].ti_Tag = RTFI_Flags;
  56.       taglist[1].ti_Data = FREQF_MULTISELECT;
  57.       taglist[2].ti_Tag = FREQF_PATGAD;
  58.       taglist[2].ti_Data = TRUE;
  59.       taglist[3].ti_Tag = TAG_END;
  60.  
  61.       res_list = (struct rtFileList *)rtFileRequestA(rt_req,filename,GetString(&md_locale,MSG_REQFILE_TITLE),taglist);
  62.       if( res_list )
  63.       {
  64.          /* Traitement de tous les arguments */
  65.          while( res_list )
  66.          {
  67.             /* On change de repertoire pour lancer la commande */
  68.             in_dir = Lock(rt_req->Dir,ACCESS_READ);
  69.             old_dir = CurrentDir(in_dir);
  70. #ifdef DEBUG
  71.             printf("Choix de %s\n",res_list->Name);
  72. #endif
  73.             /* On utilise TraitementCli() car l'utilisateur peut entrer un joker */
  74.             TraitementCli(res_list->Name);
  75.             /* On revient dans l'ancien repertoire */
  76.             CurrentDir(old_dir);
  77.             UnLock(in_dir);
  78.             in_dir = NULL;
  79.             res_list = res_list->Next;
  80.          }
  81.          rtFreeFileList(res_list);
  82.       }
  83.       else result = FALSE;
  84.    }
  85.    else result = FALSE;
  86.    /* Liberation */
  87.    rtFreeRequest(rt_req);
  88.  
  89.    FreeVec(filename);
  90.    return result;
  91. }
  92.  
  93. /* Affiche une requete d'information pour les erreurs ou l'option ShowDT */
  94. BOOL RTInfo(STRPTR body)
  95. {
  96.    struct TagItem taglist[4];
  97.    struct rtReqInfo *rt_info;
  98.    STRPTR wb_name="workbench";
  99.    BOOL result=TRUE;
  100.  
  101.    /* Allocation */
  102.    rt_info = (struct rtReqInfo *)rtAllocRequestA(RT_REQINFO,NULL);
  103.    if( rt_info )
  104.    {
  105.       taglist[0].ti_Tag = RT_PubScrName;
  106.       taglist[0].ti_Data = (ULONG)wb_name;
  107.       taglist[1].ti_Tag = RTEZ_ReqTitle;
  108.       taglist[1].ti_Data = (ULONG)GetString(&md_locale,MSG_REQINFO_TITLE);
  109.       taglist[2].ti_Tag = RTEZ_Flags;
  110.       taglist[2].ti_Data = EZREQF_CENTERTEXT;
  111.       taglist[3].ti_Tag = TAG_END;
  112.       /* Le retour n'est pas important car il n'y a qu'un seul gadget ! */
  113.       rtEZRequestA(body,"OK",rt_info,NULL,taglist);
  114.    }
  115.    else result = FALSE;
  116.  
  117.    rtFreeRequest(rt_info);
  118.    return result;
  119. }
  120.